---
title: User Interaction Mode Provider
description: The UserInteractionModeProvider is used to determine if the user is interacting with the app via mouse, keyboard, or touch. This is mostly an internal context provider to enable the keyboard movement behavior, tooltips, menus, sliders, and draggable elements. This should not be used if using the CoreProviders component.
docType: Demo
docGroup: Components
group: Providers
hooks: [useUserInteractionMode]
components: [UserInteractionModeProvider]
---

# User Interaction Mode Provider

The `UserInteractionModeProvider` is used to determine if the user is
interacting with the app via `mouse`, `keyboard`, or `touch`. This is mostly an
internal context provider to enable the keyboard movement behavior, tooltips,
menus, sliders, and draggable elements.

> !Info! This is included in the [CoreProviders](./core-providers) and should
> normally be used instead.

> !Error! Only once instance of the `UserInteractionModeProvider` can be
> mounted in the app or else an error will be thrown.

## Detecting User Interaction Mode

Once the provider has been initialized, the interaction mode can be determined
by using the `useUserInteractionMode` hook.

```demo source="./DetectingUserInteractionModeExample.tsx"

```
